package web;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import entidades.Cliente;
import entidades.Factura;
import entidades.Pago;
import entidades.ResumenCuenta;
import entidades.ordenCompraItem;
import facade.BusinessDelegate;
import facade.BusinessDelegateBean;

public class ServletResumenCuenta extends HttpServlet implements javax.servlet.Servlet {

	private static final long serialVersionUID = 1L;
	
	public ServletResumenCuenta()
	{
		super();		
	}
	
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		
		String mId = request.getParameter("txtIdcliente");
		String mMostrar = "hidden";
		String mMensaje = "";
		String mMostrarMensaje = "hidden";
				
		if (mId.length() > 0)
		{
			// Configura el cliente
			int mIdCliente = Integer.parseInt(mId);
			Cliente mC = new Cliente();
			mC.setId(mIdCliente);
			
			// Recupera el resumen
			BusinessDelegate mBD = new BusinessDelegateBean();
			ResumenCuenta mRC = new ResumenCuenta();
			mRC = mBD.getResumenCliente(mC);
			
			// Si el cliente existe muestra sus datos 
			if (mRC.getCliente() != null)
			{
				mMostrar = "inline";
				
				request.setAttribute("ClienteId", mC.getId());
				request.setAttribute("ClienteNombre", mRC.getCliente().getNombreCliente());
				request.setAttribute("ClienteSaldoActual", mRC.getCliente().getCuentaCorriente().getSaldoactual());
				request.setAttribute("ClienteNumeroCtaCte", mRC.getCliente().getCuentaCorriente().getNrocuenta());
				request.setAttribute("ClienteCondVenta", mRC.getCliente().getCondVenta());
				request.setAttribute("ClienteCondIIBB", mRC.getCliente().getCondIngBrutos());
				request.setAttribute("ClienteTipo", mRC.getCliente().getTipoCliente());
				request.setAttribute("ClienteEmail", mRC.getCliente().getEmail());
			}
			else
			{
				mMostrarMensaje = "inline";
				mMensaje = "El cliente indicado no existe";
			}
			// Lista de compras
			String mComprasLista = "";
			ArrayList<Factura> mFacturas = mRC.getOperacionesFacturadas();
			if (mFacturas != null)
			{
				for (int bI = 0; bI < mFacturas.size(); bI++)
				{
					Factura bF = mFacturas.get(bI);
					mComprasLista += String.format("<tr><td align=\"center\">%s</td><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>", bF.getNroFactura(), bF.getMontoFactura(), bF.getFechaFactura());
				}
				request.setAttribute("ComprasCantidad", mFacturas.size());
				request.setAttribute("ComprasLista", mComprasLista);
			}
			
			
			// Lista de pagos
			String mPagosLista = "";
			ArrayList<Pago> mPagos = mRC.getPagosRealizados();
			if (mPagos != null)
			{
				for (int bI = 0; bI < mPagos.size(); bI++)
				{
					Pago bP = mPagos.get(bI);
					mPagosLista += String.format("<tr><td align=\"center\">%s</td><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>", bP.getID(), bP.getMonto(), bP.getFecha());
				}
				request.setAttribute("PagosCantidad", mPagos.size());
				request.setAttribute("PagosLista", mPagosLista);
			}
			
			// Lista de pendientes
			String mPendientesLista = "";
			ArrayList<ordenCompraItem> mPendientes = mRC.getOperacionesPendientes();
			if (mPagos != null)
			{
				for (int bI = 0; bI < mPendientes.size(); bI++)
				{
					ordenCompraItem oci = mPendientes.get(bI);
					mPendientesLista += String.format("<tr><td align=\"center\">%s</td><td align=\"center\">%s</td></tr>", oci.getRodamiento().getSKF(), oci.getCantidad());
				}
				request.setAttribute("PendientesCantidad", mPendientes.size());
				request.setAttribute("PendientesLista", mPendientesLista);
			}
		
		}
		
		request.setAttribute("MostrarCliente", mMostrar);
		request.setAttribute("MostrarMensaje", mMostrarMensaje);
		request.setAttribute("MensajeError", mMensaje);
		
		//redireccionamiento
		getServletContext().getRequestDispatcher("/resumenCuenta.jsp").forward(request, response);
	}
	
}
